/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package co.com.entidad;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 *
 * @author 841756
 */
@Entity
@Table(name = "tbldatosgenerales")
@NamedQueries({
    @NamedQuery(name = "Tbldatosgenerales.findAll", query = "SELECT t FROM Tbldatosgenerales t"),
    @NamedQuery(name = "Tbldatosgenerales.findByIdentificacion", query = "SELECT t FROM Tbldatosgenerales t WHERE t.tbldatosgeneralesPK.identificacion = :identificacion"),
    @NamedQuery(name = "Tbldatosgenerales.findByContrato", query = "SELECT t FROM Tbldatosgenerales t WHERE t.contrato = :contrato"),
    @NamedQuery(name = "Tbldatosgenerales.findByFechaVenCont", query = "SELECT t FROM Tbldatosgenerales t WHERE t.fechaVenCont = :fechaVenCont"),
    @NamedQuery(name = "Tbldatosgenerales.findByFechaIngreso", query = "SELECT t FROM Tbldatosgenerales t WHERE t.fechaIngreso = :fechaIngreso"),
    @NamedQuery(name = "Tbldatosgenerales.findByCuenta", query = "SELECT t FROM Tbldatosgenerales t WHERE t.cuenta = :cuenta"),
    @NamedQuery(name = "Tbldatosgenerales.findByUltimoSueldo", query = "SELECT t FROM Tbldatosgenerales t WHERE t.ultimoSueldo = :ultimoSueldo"),
    @NamedQuery(name = "Tbldatosgenerales.findByFechaUltAumento", query = "SELECT t FROM Tbldatosgenerales t WHERE t.fechaUltAumento = :fechaUltAumento"),
    @NamedQuery(name = "Tbldatosgenerales.findByFechaRetiro", query = "SELECT t FROM Tbldatosgenerales t WHERE t.fechaRetiro = :fechaRetiro"),
    @NamedQuery(name = "Tbldatosgenerales.findByMotivoRetiro", query = "SELECT t FROM Tbldatosgenerales t WHERE t.motivoRetiro = :motivoRetiro"),
    @NamedQuery(name = "Tbldatosgenerales.findByActivoInactivo", query = "SELECT t FROM Tbldatosgenerales t WHERE t.activoInactivo = :activoInactivo"),
    @NamedQuery(name = "Tbldatosgenerales.findBySueldoActual", query = "SELECT t FROM Tbldatosgenerales t WHERE t.sueldoActual = :sueldoActual"),
    @NamedQuery(name = "Tbldatosgenerales.findByCodNom", query = "SELECT t FROM Tbldatosgenerales t WHERE t.tbldatosgeneralesPK.codNom = :codNom"),
    @NamedQuery(name = "Tbldatosgenerales.findByCodCom", query = "SELECT t FROM Tbldatosgenerales t WHERE t.tbldatosgeneralesPK.codCom = :codCom"),
    @NamedQuery(name = "Tbldatosgenerales.findByTipoSalario", query = "SELECT t FROM Tbldatosgenerales t WHERE t.tipoSalario = :tipoSalario"),
    @NamedQuery(name = "Tbldatosgenerales.findByTipoCuenta", query = "SELECT t FROM Tbldatosgenerales t WHERE t.tipoCuenta = :tipoCuenta")})
public class Tbldatosgenerales implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected TbldatosgeneralesPK tbldatosgeneralesPK;
    @Size(max = 10)
    @Column(name = "contrato")
    private String contrato;
    @Column(name = "fecha_ven_cont")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaVenCont;
    @Column(name = "fecha_ingreso")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaIngreso;
    @Size(max = 15)
    @Column(name = "cuenta")
    private String cuenta;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "ultimo_sueldo")
    private Double ultimoSueldo;
    @Column(name = "fecha_ult_aumento")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaUltAumento;
    @Column(name = "fecha_retiro")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaRetiro;
    @Size(max = 2)
    @Column(name = "motivo_retiro")
    private String motivoRetiro;
    @Size(max = 1)
    @Column(name = "activo_inactivo")
    private String activoInactivo;
    @Basic(optional = false)
    @NotNull
    @Column(name = "sueldo_actual")
    private double sueldoActual;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 1)
    @Column(name = "tipo_salario")
    private String tipoSalario;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 15)
    @Column(name = "tipo_cuenta")
    private String tipoCuenta;
    @JoinColumn(name = "tipo_contrato", referencedColumnName = "cod_tipocontrato")
    @ManyToOne(optional = false)
    private Tbltipocontrato tipoContrato;
    @JoinColumn(name = "actividad", referencedColumnName = "cod_tipoactividad")
    @ManyToOne(optional = false)
    private Tbltipoactividad actividad;
    @JoinColumn(name = "arp", referencedColumnName = "cod_arp")
    @ManyToOne(optional = false)
    private Tblarp arp;
    @JoinColumn(name = "banco", referencedColumnName = "cod_banco")
    @ManyToOne(optional = false)
    private Tblbancos banco;
    @JoinColumn(name = "caja", referencedColumnName = "cod_cajacom")
    @ManyToOne(optional = false)
    private Tblcajacompensacion caja;
    @JoinColumn(name = "cargo", referencedColumnName = "cod_cargos")
    @ManyToOne(optional = false)
    private Tblcargos cargo;
    @JoinColumn(name = "c_costos", referencedColumnName = "cod_centrocosto")
    @ManyToOne(optional = false)
    private Tblcentrocosto cCostos;
    @JoinColumn(name = "fondo_c", referencedColumnName = "cod_cesantias")
    @ManyToOne(optional = false)
    private Tblcesantias fondoC;
    @JoinColumn(name = "clase", referencedColumnName = "cod_claseemp")
    @ManyToOne(optional = false)
    private Tblclaseempleados clase;
    @JoinColumns({
        @JoinColumn(name = "identificacion", referencedColumnName = "identificacion", insertable = false, updatable = false),
        @JoinColumn(name = "cod_com", referencedColumnName = "cod_com", insertable = false, updatable = false),
        @JoinColumn(name = "cod_nom", referencedColumnName = "cod_nom", insertable = false, updatable = false)})
    @OneToOne(optional = false)
    private Tbldatospersonales tbldatospersonales;
    @JoinColumn(name = "division", referencedColumnName = "cod_divisiones")
    @ManyToOne(optional = false)
    private Tbldivisiones division;
    @JoinColumn(name = "eps", referencedColumnName = "cod_eps")
    @ManyToOne(optional = false)
    private Tbleps eps;
    @JoinColumn(name = "afp", referencedColumnName = "cod_fondop")
    @ManyToOne(optional = false)
    private Tblfondopension afp;
    @JoinColumn(name = "grupo", referencedColumnName = "cod_grupo")
    @ManyToOne(optional = false)
    private Tblgrupo grupo;

    public Tbldatosgenerales() {
    }

    public Tbldatosgenerales(TbldatosgeneralesPK tbldatosgeneralesPK) {
        this.tbldatosgeneralesPK = tbldatosgeneralesPK;
    }

    public Tbldatosgenerales(TbldatosgeneralesPK tbldatosgeneralesPK, double sueldoActual, String tipoSalario, String tipoCuenta) {
        this.tbldatosgeneralesPK = tbldatosgeneralesPK;
        this.sueldoActual = sueldoActual;
        this.tipoSalario = tipoSalario;
        this.tipoCuenta = tipoCuenta;
    }

    public Tbldatosgenerales(String identificacion, String codNom, String codCom) {
        this.tbldatosgeneralesPK = new TbldatosgeneralesPK(identificacion, codNom, codCom);
    }

    public TbldatosgeneralesPK getTbldatosgeneralesPK() {
        return tbldatosgeneralesPK;
    }

    public void setTbldatosgeneralesPK(TbldatosgeneralesPK tbldatosgeneralesPK) {
        this.tbldatosgeneralesPK = tbldatosgeneralesPK;
    }

    public String getContrato() {
        return contrato;
    }

    public void setContrato(String contrato) {
        this.contrato = contrato;
    }

    public Date getFechaVenCont() {
        return fechaVenCont;
    }

    public void setFechaVenCont(Date fechaVenCont) {
        this.fechaVenCont = fechaVenCont;
    }

    public Date getFechaIngreso() {
        return fechaIngreso;
    }

    public void setFechaIngreso(Date fechaIngreso) {
        this.fechaIngreso = fechaIngreso;
    }

    public String getCuenta() {
        return cuenta;
    }

    public void setCuenta(String cuenta) {
        this.cuenta = cuenta;
    }

    public Double getUltimoSueldo() {
        return ultimoSueldo;
    }

    public void setUltimoSueldo(Double ultimoSueldo) {
        this.ultimoSueldo = ultimoSueldo;
    }

    public Date getFechaUltAumento() {
        return fechaUltAumento;
    }

    public void setFechaUltAumento(Date fechaUltAumento) {
        this.fechaUltAumento = fechaUltAumento;
    }

    public Date getFechaRetiro() {
        return fechaRetiro;
    }

    public void setFechaRetiro(Date fechaRetiro) {
        this.fechaRetiro = fechaRetiro;
    }

    public String getMotivoRetiro() {
        return motivoRetiro;
    }

    public void setMotivoRetiro(String motivoRetiro) {
        this.motivoRetiro = motivoRetiro;
    }

    public String getActivoInactivo() {
        return activoInactivo;
    }

    public void setActivoInactivo(String activoInactivo) {
        this.activoInactivo = activoInactivo;
    }

    public double getSueldoActual() {
        return sueldoActual;
    }

    public void setSueldoActual(double sueldoActual) {
        this.sueldoActual = sueldoActual;
    }

    public String getTipoSalario() {
        return tipoSalario;
    }

    public void setTipoSalario(String tipoSalario) {
        this.tipoSalario = tipoSalario;
    }

    public String getTipoCuenta() {
        return tipoCuenta;
    }

    public void setTipoCuenta(String tipoCuenta) {
        this.tipoCuenta = tipoCuenta;
    }

    public Tbltipocontrato getTipoContrato() {
        return tipoContrato;
    }

    public void setTipoContrato(Tbltipocontrato tipoContrato) {
        this.tipoContrato = tipoContrato;
    }

    public Tbltipoactividad getActividad() {
        return actividad;
    }

    public void setActividad(Tbltipoactividad actividad) {
        this.actividad = actividad;
    }

    public Tblarp getArp() {
        return arp;
    }

    public void setArp(Tblarp arp) {
        this.arp = arp;
    }

    public Tblbancos getBanco() {
        return banco;
    }

    public void setBanco(Tblbancos banco) {
        this.banco = banco;
    }

    public Tblcajacompensacion getCaja() {
        return caja;
    }

    public void setCaja(Tblcajacompensacion caja) {
        this.caja = caja;
    }

    public Tblcargos getCargo() {
        return cargo;
    }

    public void setCargo(Tblcargos cargo) {
        this.cargo = cargo;
    }

    public Tblcentrocosto getCCostos() {
        return cCostos;
    }

    public void setCCostos(Tblcentrocosto cCostos) {
        this.cCostos = cCostos;
    }

    public Tblcesantias getFondoC() {
        return fondoC;
    }

    public void setFondoC(Tblcesantias fondoC) {
        this.fondoC = fondoC;
    }

    public Tblclaseempleados getClase() {
        return clase;
    }

    public void setClase(Tblclaseempleados clase) {
        this.clase = clase;
    }

    public Tbldatospersonales getTbldatospersonales() {
        return tbldatospersonales;
    }

    public void setTbldatospersonales(Tbldatospersonales tbldatospersonales) {
        this.tbldatospersonales = tbldatospersonales;
    }

    public Tbldivisiones getDivision() {
        return division;
    }

    public void setDivision(Tbldivisiones division) {
        this.division = division;
    }

    public Tbleps getEps() {
        return eps;
    }

    public void setEps(Tbleps eps) {
        this.eps = eps;
    }

    public Tblfondopension getAfp() {
        return afp;
    }

    public void setAfp(Tblfondopension afp) {
        this.afp = afp;
    }

    public Tblgrupo getGrupo() {
        return grupo;
    }

    public void setGrupo(Tblgrupo grupo) {
        this.grupo = grupo;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (tbldatosgeneralesPK != null ? tbldatosgeneralesPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Tbldatosgenerales)) {
            return false;
        }
        Tbldatosgenerales other = (Tbldatosgenerales) object;
        if ((this.tbldatosgeneralesPK == null && other.tbldatosgeneralesPK != null) || (this.tbldatosgeneralesPK != null && !this.tbldatosgeneralesPK.equals(other.tbldatosgeneralesPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "co.com.entidad.Tbldatosgenerales[ tbldatosgeneralesPK=" + tbldatosgeneralesPK + " ]";
    }
    
}
